
import java.util.ArrayList;
import java.util.List;

public class Vertice {

	private int id;
	private String label;
	private double peso;
	private List<Aresta> incidentes;

	public Vertice(int id) {
		super();
		this.id = id;
		incidentes = new ArrayList<Aresta>();
	}

	public Vertice(int id, String label, double peso) {
		super();
		this.id = id;
		this.label = label;
		this.peso = peso;
		incidentes = new ArrayList<Aresta>();
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getLabel() {
		return label;
	}

	public void setLabel(String label) {
		this.label = label;
	}

	public double getPeso() {
		return peso;
	}

	public void setPeso(double peso) {
		if (peso > 0)
			this.peso = peso;
	}

	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + id;
		return result;
	}

	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (!(obj instanceof Vertice))
			return false;
		Vertice other = (Vertice) obj;
		if (id != other.id)
			return false;
		return true;
	}

	public String toString() {
		return "Vertice(" + id + ")";
	}

	public void adicionarIncidente(Aresta a) {
		incidentes.add(a);		
	}

	public List<Aresta> getIncidentes() {
		return incidentes;
	}
		
	public List<Vertice> getAdjacentes(){
		List<Vertice> adjacentes = new ArrayList<Vertice>();
		for (int i = 0; i < incidentes.size(); i++) {
			Aresta atual = (Aresta)incidentes.get(i);
			Vertice oposto = atual.getOposto(this);
			adjacentes.add(oposto);
		}
		return adjacentes;
	}

}
